草庐IT

Android SurfaceView Canvas 用线程绘制

全部标签

Windows 和 Linux 线程优先级等价

Windows操作系统将以下常量定义为线程优先级:THREAD_PRIORITY_IDLE(-15)THREAD_PRIORITY_LOWEST(-2)THREAD_PRIORITY_BELOW_NORMAL(-1)THREAD_PRIORITY_NORMAL(0)THREAD_PRIORITY_ABOVE_NORMAL(1)THREAD_PRIORITY_HIGHEST(2)THREAD_PRIORITY_TIME_CRITICAL(15)Linux有sched_get_priority_max()和sched_get_priority_min()来获取线程优先级范围。Windows

c++ - 是否可以使用 c/c++ 创建一个即使主线程在 Windows 中退出也不会退出的线程?

如上图所示,一旦主线程死亡,所有其他线程将自动退出。是否可以创建一个永不死亡的线程? 最佳答案 你可以,但你可能不应该;它只会让人们感到困惑。Hereisagoodexplanation这是如何与Win32和CRT一起工作的。 关于c++-是否可以使用c/c++创建一个即使主线程在Windows中退出也不会退出的线程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3695400

c# - 从线程启动时模态弹出窗口失败——CSharp WPF

要批量上传多个文件,我有一段CSharpWPF代码,它生成线程以允许并行上传文件。如果上传发生错误,将使用MessageBox弹出一条消息。这很好用。但最近我们决定自定义MessageBox的外观。我发现当使用ShowDialog()打开我们新的自定义WPFMessageBox窗口时会抛出一个错误,提示无法启动GUI。这仅在派生线程中的代码尝试打开自定义消息窗口时发生——当从主线程打开自定义消息框时我没有看到问题。我的临时解决方法是捕获自定义对话框启动时发生的任何错误,并选择调用标准MessageBox.Show()来显示消息。行得通。我不确定为什么可以使用标准MessageBox.S

windows - 在 64 位 Windows 应用程序中获取 TID(线程信息 block )的最快方法?

我有一个计算密集型模块,我在其中添加了堆栈跟踪以便能够找到特定问题。尽管启用此堆栈跟踪时允许应用程序运行得更慢,但它不能运行慢10倍。这就是为什么我不使用DBGHELP.DLL中的StackWalk例程,而是使用帧指针自己遍历堆栈(因此我不使用FramePointerOmission编译器选项)。在大多数情况下,获取调用堆栈工作正常并且非常快,但在某些情况下,我的逻辑会失败,因为其中一个帧指针指向堆栈外的地址(不多,只是一点点)。我知道这可能是某个地方的错误,但为了能够使我的代码更安全,我需要一种方法来检查帧指针是否指向当前线程堆栈中的内存位置。该应用程序为64位,可在Windows下

带参数的 C++ 简单线程(无 .net)

我已经在互联网上搜索了一段时间并找到了不同的解决方案,但后来都没有真正起作用或者对我的使用来说太复杂了。直到2年前我才使用C++,所以它可能有点生疏:D我目前正在编写一个将数据发布到URL的程序。它只发布数据。为了发布数据,我使用curl,但它会阻塞主线程,并且当第一个帖子仍在运行时,第二个帖子应该开始。最后大概有5-6个post操作同时运行。现在我想将带有curl的帖子推送到另一个线程中。每个帖子一个线程。线程应该得到一个字符串参数,其中包含要推送的内容。我目前被困在这个问题上。尝试了Windows的WINAPI,但在读取参数时崩溃了。(在我的示例中,第二个线程仍在运行,而主线程结束

c# - 在窗口上绘制图像

我有一个窗口窗体Window正在被另一个进程绘制在上面。如果我尝试使用PrintWindow或设备上下文复制来复制窗口图像,则只会显示下面的窗口:在被另一个进程绘制之前的窗口:绘制后的窗口:当我执行PrintWindow或BitBlt时得到的窗口:是否可以直接从窗口读取窗口绘图而不向其发送paint参数?可以直接从显卡读取吗? 最佳答案 DirectX打破了规则,您无法使PrintWindow()工作。使用Graphics.CopyFromScreen()也不起作用,它有一个严重的错误,阻止您传递正确的CopyPixelOperat

c++ - 在 Direct2D 中绘制部分图像

由于GDI+相当(可笑)慢,我决定迁移到Direct2D。我在许多论坛上查找了很多主题(包括thisone),但没有成功(这也可能是由于已经很晚的事实造成的)并且Direct2D文档仍然非常薄(并且令人困惑,至少对我而言).无论如何,我有一个在Direct2D中打开的.PNG并且只想每20毫秒绘制一次它的一部分。初始化D2D内容ID2D1Factory*d2dFactory=NULL;IWICImagingFactory*d2dWICFactory=NULL;IWICBitmapDecoder*d2dDecoder=NULL;IWICFormatConverter*d2dConvert

windows - 如果线程在临界区内死亡,会发生什么?

场景是这样的。我们有很多线程访问受临界区保护的一段代码,这确保一次只有一个线程可以访问该部分。现在的问题是,如果一个线程死在临界区内会发生什么?应用程序会挂起吗?或者有什么方法可以释放锁? 最佳答案 来自MSDN:Ifathreadterminateswhileithasownershipofacriticalsection,thestateofthecriticalsectionisundefined.来源:http://msdn.microsoft.com/en-us/library/windows/desktop/ms6826

c++ - 查找可能是由于线程锁定(可能)引起的性能问题

我花了一些时间运行valgrind/callgrind来分析一个使用许多线程进行大量TCP/IP通信的服务器。在提高性能一段时间后,我意识到在这个特定的测试场景中,进程不受CPU限制,所以我看到的性能“改进”没有用。理论上CPU应该很忙。我知道它连接的TCP/IP设备不是限制,因为服务器在两台机器上运行。一个是PC,另一个是带有Arm处理器的嵌入式设备。即使是嵌入式设备也只有大约2%的CPU使用率,但它执行的事务要少得多——大约十分之一。尽管我们试图尽快获取数据,但两个系统最多只能获取大约2%。我的猜测是某个互斥锁被锁定并占用了一个线程。这是一个纯粹的猜测!系统中有几个线程具有公共(p

c++ - SetWindowPos 是否立即绘制

在每次鼠标移动事件中,我都在移动我的窗口。从文档中可以看出,如果移动成功,SetWindowPos会返回一个非零值。我想证实我的推断,即每次SetWindowPos返回一个非零值时,移动都已经发生。这意味着,窗口实际上已经在新位置重新绘制,然后函数才返回。函数返回后不久(处理某种消息时)不会发生移动。 最佳答案 IwantedtoconfirmmyinferencethateverytimeSetWindowPosreturnsanon-zerovalue,themovehasalreadyhappened.Whichmeans,t